操作系统输入/输出管理 您所在的位置:网站首页 github 操作系统 操作系统输入/输出管理

操作系统输入/输出管理

2023-04-18 00:36| 来源: 网络整理| 查看: 265

按照使用特性分为以下类型:人机交互类外部设备:打印机,显示器,键鼠等。数据交换速度慢,通常以字节为单位数据交换。存储设备:磁盘,光盘等。用于数据交换,速度快,通常以多字节组成的块为单位数据交换。网络通信设备:网络接口等。速度介于前两者之间,用于远程设备通信。除了以上分类方式,还可以按照以下方法分类:

按传输速率分类:①低速设备:键鼠等。②中速:打印机等。③高速:磁带机,光盘机,磁盘机等。

按信息交换的单位分类:①块设备:属于有结构设备,如磁盘,基本特征就是传输速率高,可寻址即随机读写。②字符设备:用于IO的设备,传输基本单位是字符,无结构类型,如打印机等,基本特征是传输速率低,不可寻址,IO采用中断驱动方式。

IO控制器 IO控制方式

外围设备和内存之间IO控制方式有4种。

程序直接控制方式:计算机从外部设备读取数据到存储区,每次读取一个字的数据,每个字CPU都需要对于外设状态进行循环检查(轮询!!!),由于CPU的高速性和IO设备的低速性,使得CPU绝大多数时间等待IO设备完成循环测试。该方法易于实现,但CPU利用率低。

中断驱动方式:允许IO设备主动打断CPU运行并请求服务,从而“解放”CPU,使其向IO控制器发送读指令后可以继续做其他有用工作。从IO设备角度看,IO设备从CPU接收一个读指令,从外围设备读取数据,一旦数据读入该IO控制器的数据寄存器,便使得通过控制线给CPU发出一个中断信号,表示数据已经准备好等待CPU请求数据,然后收到CPU发出的取数据请求之后,把数据放到数据总线上,传到CPU的寄存器中。而CPU角度看,CPU发出读指令,保存当前程序上下文,转去执行其他程序,接到IO设备中断时,CPU保存其他程序的上下文,转去执行中断处理程序,这时CPU从IO控制器读取一个字的数据传送到寄存器。中断驱动的方法比直接控制有效,但由于数据的每个字在存储器与IO控制器之间的传输都必须经过CPU,导致CPU时间依然被大量浪费。

DMA方式:在IO设备与内存之间开辟直接的数据交换通路,彻底解放CPU。特点如下:①基本单位是数据块。②所传送的数据是从设备直接送入内存的(或相反)。③仅在数据块传送的开始和结束,才需要CPU的干预,整块数据的传送时在DMA控制器的控制下完成的。工作过程就是:CPU接到IO设备请求,给IO设备控制器发送一条指令,启动DMA控制器,然后继续其他工作。之后CPU把控制操作委托给DMA控制器,其直接与存储器交互,传送整个数据块,每次传送一个字,过程不需要CPU参与,完成之后DMA控制器发送一个中断信号给CPU。

通道控制方式:IO通道是专门负责IO的处理机,是DMA的发展,进一步减少CPU干预。CPU只需要向IO通道发送一条IO指令,给出其所要执行的通道程序的首地址和要访问的IO设备,通道程序即可执行CPU指定任务,数据传送结束时间向CPU发中断请求。IO通道与一般处理机区别是:通道指令类型单一,没有自己内存,通道执行的程序放在主机内存中。IO通道和DMA区别是:DMA方式需要CPU来控制传输数据块大小,传输内存位置,而通道中这些信息由通道控制的。

总结:

IO子系统的层次结构

IO软件涉及面很广,跟硬件,用户都由直接交互,与进程管理,存储管理等都有联系,他们都可能需要IO软件来实现IO操作。IO软件普遍采用层次式结构,每层利用下层服务,完成某些功能,并屏蔽细节向上层提供服务。

用户层IO软件:用户交互的接口,用户直接调用。

设备独立性软件:用户程序与设备驱动器的统一接口,设备命令,设备保护,设备分配和释放等。设备独立性也称无关性,使得应用程序独立于使用物理设备,为实现设备独立性而引入了逻辑设备和物理设备这两个概念。应用程序中,使用逻辑设备名来请求某类设备,实际执行时必须把逻辑设备名改为物理设备名使用。

设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动IO设备工作的驱动程序。

中断处理程序:保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完并且恢复被中断进程的现场,返回到被中断环境。

硬件设备:IO设备通常包括一个机械部件和电子部件。

IO核心子系统IO子系统概述

由于IO设备种类繁多,功能和传输速率差异巨大,因此需要多种方法来进行设备控制,这些方法共同组成了OS内核的IO子系统,把内核的其他方面从繁重的IO设备管理中解放,其中IO核心子系统提供的服务主要有IO调度,缓冲与高速缓存,设备分配和回收,假脱机,设备保护和差错处理等。

IO调度概念

IO调度就是确定一个好的顺序执行这些IO请求,来改善系统整体性能,使得进程之间公平的共享设备访问,减少IO完成的时间。OS通过为每个设备维护一个请求队列来实现调度,当一个应用程序执行阻塞IO系统调用时,该请求就添加到相应设备的队列上,IO调度会重新安排队列顺序,以改善系统总体效率和平均响应时间。

高速缓存和缓冲区

磁盘高速缓存:OS中使用磁盘高速缓存技术来提高磁盘IO速度,对于高速缓存复制的访问比原始数据访问更高效,例如:正在运行的进程的指令既存储在磁盘上,又存储在物理内存上,也被复制到CPU的二级和一级高速缓存中。

缓冲区Buffer:设备管理子系统中引入缓冲区的目的是:①缓和CPU与IO设备之间速度不匹配的矛盾。②减少对CPU的中断频率,放款对CPU中断响应时间的限制。③解决基本数据单元大小不匹配的问题。④提高CPU和IO设备之间的并行性。缓冲区的特点:缓冲区的数据非空时不能往中冲入数据,智能把缓冲区把数据传输,为空时可以冲入数据,但必须充满之后才能把数据传出。单缓冲,双缓冲,循环缓冲,缓冲池。

高速缓存和缓冲区的对比:

SPOOLing技术(假脱机技术)

为了缓和CPU高速性和IO设备低速性之间的矛盾,引入了脱机IO技术,该技术利用专门的外围控制机,把低速IO设备上的数据传送到高速磁盘上,或相反。SPOOLing的意思就是外部设备同时联机操作,又称假脱机IO操作,是一种把独占设备改为共享设备的技术。

①输入井和输出井:输入井模拟脱机输入时的磁盘,用于收容IO设备输入的数据。输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。②输入缓冲区和输出缓冲区:输入缓冲区暂存输入设备送来的数据,以后再传送到输入井。输出缓冲区暂存从输出井传来的数据,以后再传送到输出设备。③输入进程和输出进程:输入进程模拟脱机输入时的外围控制机,把用户要求数据从输入机通过输入缓冲区送到输入井,当CPU需要输入数据时,直接把输入井数据读入内存。输出进程模拟脱机输出时的外围控制机,把用户要求输出数据从内存送到输出井,待输出设备空闲时,再输出井中数据经过输出缓冲区送到输出设备。共享打印机就是一个SPOOLing的一个实例。特点就是:提高IO速度,把独占设备改造成共享设备,实现了虚拟设备功能。(CPU要向打印机输出要打印的数据之后,去做其他事情,若此时打印机被占用则SPOOLing系统就把这个打印请求挂到等待队列上,待打印机有空再打印出来,向磁盘输出数据速度比向打印机输出数据速度快,因此节约了时间)

设备分配和回收

设备分配概述:根据用户的IO请求分配所需的设备,原则就是充分发挥设备的使用效率,尽可能让设备忙碌起来,又要避免由于不合理分配方法造成进程死锁,从设备特性分三类:①独占式设备:比如打印机。②分时式共享设备:设备没有独占要求时,可以通过分时共享使用提高利用率。③以SPOOLing方式使用外部设备:SPOOLing技术即假脱机IO技术,用于对设备的操作,实质上就是对IO操作进行批处理,实质上是空间换时间的技术。(而页置换就是时间换空间)

设备分配的数据结构:主要有设备控制表DCT,控制器控制表COCT,通道控制表CHCT,系统设备表SDT。①设备控制表DCT:一个表代表一个设备,表项就是设备各属性:

②现在IO控制都采用通道控制。设备控制器控制设备与内存交换数据,而设备控制器有需要请求通道为它服务,因此每个COCT必定有一个表项存放指向相应通道控制表CHCT的指针,而一个通道可以为多个设备控制器服务,因此CHCT中必然有一个指针指向一个表,这个表上的信息表达的是CHCT提供服务的几个设备控制器。CHCT和COCT是一对多的关系。

③系统设备表SDT:系统只有一张,记录所有设备情况,每个表目代表一个设备。

分配步骤:

由于系统中进程大于资源数目,引起资源竞争,因此要有一套合理的分配原则,主要考虑因素是:IO设备固有属性,分配算法,安全性,独立性。

设备分配的策略:①原则:根据设备特性,用户要求和系统配置情况。总原则就是:既要充分发挥设备使用效率,又要避免造成进程死锁,还要把用户程序和具体设备隔离开。②分配方式:动态和静态分配。静态分配主要是独占是设备分配,在作业执行前系统一次性分配该作业要求全部设备,一旦分配就不可更改,分配方式不会出现死锁,但设备使用效率低。动态分配在进程执行过程中根据执行需要进行,当进程需要设备时,通过系统调用命令向系统提出设备请求,根据策略给其分配设备,用完立即释放,动态分配有利于提高设备的利用率,若分配算法使用不当有可能造成死锁。③设备分配算法:主要是先请求先分配和优先级高者优先。

设备分配安全性:指的是设备分配中应防止发生进程死锁。①安全分配方式:进程发出IO请求便进入阻塞态,直到IO请求完成才被唤醒。所以一旦进程获得某种设备后便进入阻塞,不请求任何资源。优点就是设备分配安全,缺点就是CPU和IO设备是串行工作的。②不安全分配方式:进程在发出IO请求后继续发出第二个等,仅当进程请求设备已被另一个进程占用时才进入阻塞态,优点就是一个进程可以同时操作多个涉笔,缺点就是可能死锁。

逻辑设备名到物理设备名的映射:为了提高设备分配灵活性和设备利用率,方便实现IO重定向,引入了设备独立性(应用程序独立于具体使用的物理设备),为了实现特性系统中设置了一张逻辑设备表LUT,用于把逻辑设备名映射到物理设备名。LUT表项包括逻辑设备名,物理设备名,设备驱动程序入口地址,进程用逻辑设备名请求设备时,系统分配相应物理设备,并且在LUT建立表项,以后系统在利用逻辑设备名时查找LUT即可找到相应物理设备和驱动程序。可以整个系统一张LUT(单用户系统),也可以一个用户一张LUT。

总结:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有